C++11 std::shared |
您所在的位置:网站首页 › shared_ptr new › C++11 std::shared |
最近看代码,智能指针用的比较多,自己平时用的少,周末自己总结总结。方便后续使用。 std::shared_ptr大概总结有以下几点: (1) 智能指针主要的用途就是方便资源的管理,自动释放没有指针引用的资源。 (2) 使用引用计数来标识是否有多余指针指向该资源。(注意,shart_ptr本身指针会占1个引用) (3) 在赋值操作中, 原来资源的引用计数会减一,新指向的资源引用计数会加一。 std::shared_ptr p1(new Test); std::shared_ptr p2(new Test); p1 = p2; (4) 引用计数加一/减一操作是原子性的,所以线程安全的。 (5) make_shared要优于使用new,make_shared可以一次将需要内存分配好。 std::shared_ptr p = std::make_shared();std::shared_ptr p(new Test);(6) std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。 (7) 引用计数是分配在动态分配的,std::shared_ptr支持拷贝,新的指针获可以获取前引用计数个数。
下面是一段示例代码,注释详细: 1 include 2 #include 3 #include 4 #include 5 #include 6 7 struct Test 8 { 9 Test() { std::cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |